//
// Created by pzw on 23-12-29.
//

#ifndef QTTEST_OPENCAN_H
#define QTTEST_OPENCAN_H

#include <QMainWindow>
#include <QVBoxLayout>
#include <QPushButton>
#include <QLabel>
#include <QComboBox>
#include "../so/ECanVci.h"
#include "../comm/CommunityCan.h"

class OpenCan : public QMainWindow {
Q_OBJECT
public:
    OpenCan(QWidget *parent = 0, QFlags<Qt::WindowType> name = 0);

    virtual ~OpenCan();

protected:
    void closeEvent(QCloseEvent *event) override;

private:
    QComboBox *baudRateComboBox;
    QLabel *baudRateLabel;
    QLabel *errorLabel;

protected:
    /**
     * 注意这两个是配套的，配套后才能确定波特率
     * 默认 500k = <0x00, 0x1c>
     */
    UCHAR baudRate0 = 0x00, baudRate1 = 0x1c;
    /**
     * 使用正常模式
     */
    UCHAR openCanMode = 0;

private:

    /**
     * 打开can设备，如果返回 STATUS_OK 状态码，就可以去打开通信界面，进行数据收发了
     *
     * @param unset_config: 是否没有设置
     * @param init_config:  配置的设置
     * @return 打开状态
     */
    unsigned int OpenCanDevice(
            bool unset_config,
            INIT_CONFIG init_config
    );

private slots:

    void UserOpenCaneDevice();
};


#endif //QTTEST_OPENCAN_H
